# Replication file for: Panem et Circenses: Removing Political News to Generate Electoral Support, Evidence from Berlusconi’s Italy
source(here::here("src","00_init.R"))

# Prepare TV transcripts' dataset ---------------------------------------------------------
load(here::here("data", "raw","Dati_trascrizioni_RAI.RData"))
dat <- trascrizioni
rm(trascrizioni)

# Rename text to Text:
dat$Text <- dat$Contenuto.Audio..Trascrizione.
dat$Contenuto.Audio..Trascrizione. <- NULL

# Create an ID var:
dat$id <- paste(dat$Titolo, dat$Data.Trasmissione, dat$Edizione, sep="_")

# Selecting only news programs:
table(dat$Titolo)
dat <- dat[dat$Titolo %in% c("TG5", "StudioAperto", "TG7", "TG1", "TG2", "TG3", "TG4"),]

# Getting rid of empty rows
dat <- dat[!dat$Text=="",]

# Date
dat$Data.Trasmissione <- as.character(dat$Data.Trasmissione)
dat$Data.Trasmissione <- as.Date(dat$Data.Trasmissione,"%d/%m/%Y")
dat <- dat[order(dat$Data.Trasmissione),]       # Sort per data trasmissione
dat <- dat[!is.na(dat$Data.Trasmissione),]      # drop if Data.Trasmissione is.na

# To character
dat$Titolo <- as.character(dat$Titolo)
dat$Canale.Di.Trasmissione <- as.character(dat$Canale.Di.Trasmissione)
dat$Argomento <- as.character(dat$Argomento)
dat$Time.Start <- as.character(dat$Time.Start)
dat$Time.Stop <- as.character(dat$Time.Stop)

# Computing duration of the news ---------------------------------------------------------
dat$Time.Start <- paste(dat$Data.Trasmissione, dat$Time.Start)
dat$Time.Start <- as.POSIXlt(dat$Time.Start, format = "%Y-%m-%d %H:%M:%S")
dat$Time.Stop <- paste(dat$Data.Trasmissione, dat$Time.Stop)
dat$Time.Stop <- as.POSIXlt(dat$Time.Stop, format = "%Y-%m-%d %H:%M:%S")
require(lubridate)
dat$duration <- as.numeric(dat$Time.Start %--% dat$Time.Stop)    # Interval measured in seconds
dat$duration <- dat$duration/(60*60)          # Converted to hours


# Fix minor typos in edition's time:
dat$Edizione <- gsub("8:00", "08:00", dat$Edizione)
dat$Edizione <- gsub("008:00", "08:00", dat$Edizione)


# Arranging topics based on RAI-labelled issues --------------------------------

# There are duplicates differing for coding factual mistakes or encoding problems (accents)
dat$Argomento[dat$Argomento=="Giustizia, Criminalit e Sicurezza"] <- "Giustizia Criminalita Sicurezza"
dat$Argomento[dat$Argomento=="Cultura e Scienze umane"] <- "Cultura Scienze Umane"
dat$Argomento[dat$Argomento=="Sanit e salute"] <- "Sanita Salute"
dat$Argomento[dat$Argomento=="Editoria, Stampa e Mass Media"] <- "Editoria Stampa Mass Media"
dat$Argomento[dat$Argomento=="Industria, Impresa e Produzione"] <- "Industria Impresa Produzione"
dat$Argomento[dat$Argomento=="Politica, Partiti, Istituzioni e Sindacati"] <- "Politica Partiti Istituzioni Sindacati"
dat$Argomento[dat$Argomento=="Ambiente, Natura e Territorio"] <- "Ambiente Natura Territorio"
dat$Argomento[dat$Argomento=="Consumi e Servizi"] <- "Consumi Servizi"
dat$Argomento[dat$Argomento=="Lavoro e Previdenza"] <- "Lavoro Previdenza"
dat$Argomento[dat$Argomento=="Scienze e Tecnologie"] <- "Scienze Tecnologie"
dat$Argomento[dat$Argomento=="Tempo Libero"] <- "Tempo libero"

dat$Argomento <- tolower(dat$Argomento)
dat$Argomento <- as.factor(dat$Argomento)

# Macro-argomento (topic area)
dat$MacroArgomento[dat$Argomento=="ambiente natura territorio"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="arte ed artigianato"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="avvenimenti celebrazioni eventi storici"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="commercio"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="consumi servizi"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="cronaca"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-arresto"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-attentato"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-decesso"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-esequie"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-immigrazione"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-incendio"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-incidente"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-maltempo"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-omicidio"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-papa"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-pontefice"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-protesta"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-ricovero"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-terremoto"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-uccisione"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cronaca-uragano"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="cultura scienze umane"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="economia credito finanza"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="economia credito finanza-banca"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="economia credito finanza-borsa"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="economia credito finanza-deficit"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="economia, credito e finanza"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="editoria stampa mass media"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="esteri"] <- "Esteri"
dat$MacroArgomento[dat$Argomento=="esteri-attentato"] <- "Esteri"
dat$MacroArgomento[dat$Argomento=="esteri-diplomazia"] <- "Esteri"
dat$MacroArgomento[dat$Argomento=="esteri-elezioni"] <- "Esteri"
dat$MacroArgomento[dat$Argomento=="esteri-elezioni politiche"] <- "Esteri"
dat$MacroArgomento[dat$Argomento=="esteri-guerriglia"] <- "Esteri"
dat$MacroArgomento[dat$Argomento=="esteri-terrorismo"] <- "Esteri"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-arresto"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-banca"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-camorra"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-inchiesta"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-mafia"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-omicidio"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-processo"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-rapina"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-terrorismo"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="giustizia criminalita sicurezza-indagine"] <- "Giustizia"
dat$MacroArgomento[dat$Argomento=="individuo famiglia associazioni societa"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="industria impresa produzione"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="istruzione e formazione"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="istruzione formazione"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="lavoro previdenza"] <- "Economia"
dat$MacroArgomento[dat$Argomento=="musica e spettacolo"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="no text found..."] <- NA
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-banca"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-centrodestra"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-centrosinistra"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-economia"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-elezioni politiche"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-elezioni regionali"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-finanziaria"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-governo"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-referendum"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-riforma"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="politica partiti istituzioni sindacati-sciopero"] <- "Politica"
dat$MacroArgomento[dat$Argomento=="sanita salute"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="scienze tecnologie"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="sport"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="sport-calcio"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="sport-ciclismo"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="tempo libero"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="trasporti"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="trasporti-sciopero"] <- "Cronaca"
dat$MacroArgomento[dat$Argomento=="usi e costumi"] <- "Tempo Libero"
dat$MacroArgomento[dat$Argomento=="vita e cultura religiosa"] <- "Tempo Libero"


# Manual coding of "Soft" and "Hard" News-------------------------------------------------------------------------------
dat$HardSoftCategory[dat$Argomento=="ambiente natura territorio"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="arte ed artigianato"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="avvenimenti celebrazioni eventi storici"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="commercio"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="consumi servizi"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-arresto"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-attentato"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-decesso"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-esequie "] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-immigrazione"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-incendio"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-incidente"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-maltempo"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-omicidio"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-papa"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-pontefice"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-protesta"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-ricovero"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="cronaca-terremoto"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-uccisione"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cronaca-uragano"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="cultura scienze umane"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="economia credito finanza"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="economia credito finanza-banca"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="economia credito finanza-borsa"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="economia credito finanza-deficit"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="economia, credito e finanza"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="editoria stampa mass media"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="esteri"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="esteri-attentato"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="esteri-diplomazia"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="esteri-elezioni"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="esteri-elezioni politiche"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="esteri-guerriglia"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="esteri-terrorismo"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-arresto"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-banca"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-camorra"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-inchiesta"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-mafia"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-omicidio"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-processo"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-rapina"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-terrorismo"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="giustizia criminalita sicurezza-indagine"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="individuo famiglia associazioni societa"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="industria impresa produzione"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="istruzione e formazione"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="istruzione formazione"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="lavoro previdenza"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="musica e spettacolo"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="no text found..."] <- NA
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-banca"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-centrodestra"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-centrosinistra"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-economia"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-elezioni politiche"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-elezioni regionali"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-finanziaria"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-governo"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-referendum"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-riforma"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="politica partiti istituzioni sindacati-sciopero"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="sanita salute"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="scienze tecnologie"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="sport"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="sport-calcio"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="sport-ciclismo"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="tempo libero"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="trasporti"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="trasporti-sciopero"] <- "Hard"
dat$HardSoftCategory[dat$Argomento=="usi e costumi"] <- "Soft"
dat$HardSoftCategory[dat$Argomento=="vita e cultura religiosa"] <- "Soft"

# Text preprocessing -----------------------------------------------------------
# Creating text_quanteda indicator
dat$tmp <- 1:nrow(dat)
dat$text_quanteda <- paste0("text",dat$tmp)
dat$tmp <- NULL

dim(dat)
names(dat)

# tm package requires first variable to be "doc_id" and second "text"
dat <- dplyr::select(dat,   # newname = oldname
                     doc_id=Documento,                       # required
                     text=Text,                              # required
                     Argomento=Argomento,
                     Titolo=Titolo,
                     Edizione=Edizione,
                     date=Data.Trasmissione,
                     canale=Canale.Di.Trasmissione,
                     MacroArgomento=MacroArgomento,
                     HardSoftCategory=HardSoftCategory,
                     HardSoftCategory_2=HardSoftCategory_2,
                     duration=duration,
                     Time.Start=Time.Start,
                     Time.Stop=Time.Stop,
                     text_quanteda=text_quanteda)

# Naming the entries:
dat$doc_name_long <- paste(dat$Titolo,dat$date,dat$Edizione,dat$docs,sep="_")

# Encoding UTF-8:
dat$text <- iconv(dat$text, to="UTF-8")

# Convert as character
dat$doc_id <- as.character(dat$doc_id)
dat$Argomento <- as.character(dat$Argomento)

# Convert to lower case
dat$text <- tolower(dat$text)

# Remove all spaces first (many "\n" and "\t" in the text)
# http://stackoverflow.com/questions/36690547/how-to-forbid-punctuation-and-whitespace-inside-ngrams
dat$text <- gsub("\n"," ",dat$text)
dat$text <- gsub("\t"," ",dat$text)
dat$text <- gsub("\r"," ",dat$text)
dat$text <- gsub("\\\\"," ",dat$text)
dat$text <- gsub("\""," ",dat$text)

# Remove punctuation while adding a space (or: "lamaca")
dat$text <- gsub("[[:punct:]]"," ", dat$text)

#Remove one or two letter words
dat$text <-gsub(" *\\b[[:alpha:]]{1}\\b *", " ", dat$text) # Remove 1-2 letter words
dat$text <-gsub("^ +| +$|( ) +", "\\1", dat$text) # Remove excessive spacing


# Sort 
dat <- dat %>% arrange(Data.Trasmissione, Canale.Di.Trasmissione, Edizione, Time.Start)
dat$id_num <- 1:nrow(dat)
dat <- dplyr::relocate(dat, id_num, doc_id, doc_name_long, Titolo, Edizione, Time.Start, Time.Stop, text)

# Save file:
save(dat,
     file= here::here("data", "processed","dat_transcripts_alltopics.Rdata"))

# Isolating the window 4 months around the Fall of the Berlusconi Government
dat_gf <- dat %>% 
  filter(date > as.Date(x = "2011-09-11") & date < as.Date(x = "2012-01-12"))

save(dat_gf,
     file= here::here("data", "processed","dat_transcripts_alltopics_government_fall.Rdata"))
  

# Creating custom stopwords’ list -------------------------------------------------------
# Basic list from snowball
stopw <- stopwords("italian")     # link here: # http://snowball.tartarus.org/algorithms/italian/stop.txt
# adding ranks' stopwords: http://www.ranks.nl/stopwords/italian
require(rvest)
ranks <- read_html("http://www.ranks.nl/stopwords/italian") %>% html_nodes("td") %>% html_text
ranks <- paste(ranks,collapse=" ")
ranks <- unlist(strsplit(ranks," ", fixed=TRUE))
# Add list of Italian first names:
load(file = file.path(here::here(), "data", "raw", "first.names.Rdata"))
# Few more custom stopwords based on visual check:
stopw <- c(first.names,stopw,ranks,"l","poi","far","quest","qual","tant","quel","dic","so","quell","avev","piu","fa","vorrebb","gia","puo","s","sar","d","nun","ce","n","foss","x","b","va","ogni","vuol", "andar", "propr","fatt","vann","www","fonte")
rm(ranks, first.names)
stopw <- unique(stopw)
stopw <- tolower(stopw)
stopw <- unique(stopw)
save(stopw,
     file = file.path(here::here(), "data", "processed","stopw.file.Rdata"))
